ASIC 또는 FPGA에서 delay, skew, slack, slew등의 용어가 자주 나오고 있습니다. 모두 타이밍에 관한 특성 값들이지만, 서로 어떻게 다른 지 개념을 잡고 있는 것이 중요할 것 같습니다.
1. Delay CELL_DELAY는 전자의 이동속도 등과 관련이 있습니다. CELL_DELAY는 아래 그림과 같이 세숫대야 모델(?)로 이해 할 수 있습니다.
현재 물이 비어있다고 가정하면, '0'의 값입니다. 수도꼭지를 틀어서 수위가 '1'이 될 때 까지의 시간을 "RISE_DELAY"라고 합니다. 그리고 수채구멍을 열어 수위가 다시 '0'이 될 때 까지의 시간을 "FALL_DELAY"라고 합니다. 물 대신 전자가 대야에 차고 또 비워지고 하는 것을 디지털의 '1'과 '0'으로 이해한다면 CELL_DELAY의 의미를 마음속에 그려 볼 수 있을 것입니다. '0'은 0V이고, '1'은 경우에 따라서 3.3V 또는 5V 등의 전압을 의미 합니다.
단순하게 하기 위해, 필요한 부분만 남기고 나머지는 삭제하였습니다. RTL(Verilog 또는 VHDL)로 설계 할 때는 단일 클럭인 "CLK" 만을 사용하는 설계였는데, 회로합성(synthesis)툴이 클럭을 나누어서 플립플롭 3개와 5개를 따로 드라이브하는 구조로 합성하였습니다. 그 이유를 처음의 그림의 세숫대야 모델로 생각을 해 볼 수 있습니다. CLK'(수도꼭지#1)는 세 개의 세숫대야, 그리고 CLK''(수도꼭지#2)는 다섯개의 세숫대야를 채워야 하기 때문에 CLK''에서 공급받는 bar의 세숫대야는 약간 늦은 시간에 '1'로 도달할 것입니다.
3. SLACK 클럭이 100MHz 클럭이라고 가정해 보겠습니다. 그렇다면 주기(period)는 10ns일 것입니다. foo와 bar사이에 "AND"게이트가 하나 있습니다. 이 AND게이트의 CELL_DELAY = 7ns라고 가정해 보겠습니다. 이 말을 "3ns의 Slack이 있다."라고 이야기 합니다. 즉 slack은 "마진(여유)"이라고 해석하면 될 것입니다. 이 때 타이밍 리포트를 뽑아 보면 "SLACK = -5ns"라고 나올 것입니다. 즉 "네거티브 슬랙"의 의미는 우리가 원하는 조건(timing constraint)에 이 만큼 만족하지 못했다는 것을 의미하게 됩니다.
4. SLEW 위의 세숫대야 모델로 본다면 RISE_DELAY와 FALL_DELAY를 통칭하는 의미로 보시면 됩니다. 상식적으로는 수도꼭지(drive strength)가 굵어서 '0'에서 '1'로 가는 시간이 짧으면 짧을 수록 좋은 것 처럼 보입니다. 하지만 무조건 빠른 것이 모든 면에서 좋은 것은 아닙니다.
즉, 항상 slew(기울기)가 높은 것이 좋은 것은 아닌 것입니다. 이런 전자기파는 EMI 또는 노이즈라고 부르며 보드(PCB)상의 다른 소자들에게 간섭을 주는 등 아주 좋지 않습니다. 이 처럼 순간 전력 피크치가 높으면, 칩 내부에 전압 강하 등의 문제가 발생할 수도 있을 것입니다. 이러한 이유들로 인해 '기울기'를 고의적으로 약간 "뉘여"주는 것이 전기적 특성을 좋게 만들기 때문에 "Slew Rate Control"이 가능한 출력 패드들이 있습니다. |